5 Analisis de datos

5.1 Cargar de datos

Ahora demostraremos como cargar la data tanto para r-studio de escritorio como para R- cloud (versión online).

5.1.1 En R-Studio

Para importar bases de datos en formato Excel en R- studio se ingresa en la ventana 2 en donde dice Import Dataset como se observa en la siguiente imagen.

Luego aparece una ventana en donde buscamos nuestra base de datos en nuestro computador, y una vez seleccionado el archivo aparece una segunda ventana llamada Import Dataset como se muestra en las dos siguientes imágenes. En la primera es la forma correcta de subir la base de datos como se encuentra demarcado el Heading colocamos YES esto es con el fin de que la base de datos que subamos tenga el encabezado correspondiente como se encuentra demostrado en la imagen.

De lo contrario se puede ver en la imagen dos lo que sucede si ponemos NO en donde el encabezado se muestra como una observación más.

Una vez importada la base de datos podemos ver que aparece como Data Frame en la ventana 2, en esta también nos muestra características básicas como la cantidad de observaciones que posee el Data Frame. También se puede observar en la consola que se importó el archivo correctamente, es recomendable copiar y pegar en el script lo demarcado , así cada vez que queramos trabajar se subirá automáticamente la base de datos.

5.1.2 R- cloud

En cuanto a R-Cloud se suben los archivos un poco diferentes, en este nos tenemos que dirigir la ventana 4 en donde dice Upload, esto abrirá una ventana llamada Target directory presionamos donde die elegir archivo, con esto nos abre otra ventana en donde debemos buscar el archivo que dejamos importar.

Esto creara un archivo en la ventana 4 como se muestra en la siguiente imagen. Y ahora se procede a realizar la importación del archivo en la segunda ventana como se realiza en R- Studio.

5.2 tipos de datos en tibble

5.3 Combinar base de datos

Cuando se trabaja con grandes cantidades de datos, a veces es necesario combinar bases de datos para consolidarlo en una que contenga toda la información. En este capítulo veremos diferente forma de realizar datos relacionales, pero primero hay que tener en cuenta la siguiente recomendación:

  • Debes extraer los datos básicos de cada base de datos como.
  • La cantidad de filas y columnas por cada base de datos.
  • De qué tipo son las columnas, por ejemplo, si son numéricas o carácter .
  • Revisar cuidadosamente la visualización de la base de datos para observar si existen algún punto en común entre las bases de datos.
  • Debes conocer que representa cada variable de base de datos.
  • luego realiza un diagrama para ver las variables en común.

Como se observa en la siguiente imagen.

En segundo lugar, hay que tener en cuenta las tres familias de verbos diseñados para trabajar con datos relacionales:

  • filtering joins (Filtrado de combinaciones) , que filtran las observaciones de un marco de datos en función de si coinciden o no con una observación de la otra tabla.
  • set operations (Establecer operaciones) , que tratan las observaciones como si fueran elementos establecidos.
  • mutating joins (Uniones de trasformación) , que agregan nuevas variables a un marco de datos a partir de observaciones coincidentes en otro.

5.3.1 mutating joins (Uniones de trasformación)

Esta busca combinar variables a partir de dos tablas, en la que busca coincidencias de observaciones de acuerdo con su put y luego copia las variables de una tabla en la otra.

Tal como mutate(), las funciones de unión agregan variables hacia la derecha, por lo que, si tienes muchas variables inicialmente, las nuevas variables no se imprimirán.

Uno de los más simples es a través de mage() para hacer cruces de tablas imagen

Para ello crearemos 2 bases baseA y baseB con una llave o columna en común ID.

##   ID  A
## 1  1 x1
## 2  2 x2
## 3  3 x3
## 4  4 x4
## 5  5 x5
## 6  6 x6
##   ID  B
## 1  1 y1
## 2  2 y2
## 3  3 y3
## 4  4 y4
## 5  5 y5
## 6  6 y6

Para unir la baseA y en la baseB utilizaremos merge() para crear la base AB.

##   ID  A  B
## 1  1 x1 y1
## 2  2 x2 y2
## 3  3 x3 y3
## 4  4 x4 y4
## 5  5 x5 y5
## 6  6 x6 y6

5.3.1.1 Unión interior

La forma más simple de unión es la unión interior (del inglés inner join). Como se muestra en la siguiente imagen:

Pero primero crearemos 3 vectores ID, A y B para luego crear un baseA y baseB.

A continuación, en vez de crear un base llamada baseAB se concatena la baseA con la baseB para llamarse baseA.

##   ID  A  B
## 1  1 x1 y1
## 2  2 x2 y2
## 3  3 x3 y3
## 4  4 x4 y4
## 5  5 x5 y5
## 6  6 x6 y6

Como se observas se unieron las baseA y baseB, una unión interior mantiene las observaciones que aparecen en ambas tablas.

5.3.2 Uniones exteriores

Una unión exterior mantiene las observaciones que aparecen en al menos una de las tablas. Existen tres tipos de uniones exteriores:

  • Una unión izquierda left_join() mantiene todas las observaciones en x.

##   ID  A    B
## 1  1 x1   y1
## 2  2 x2   y2
## 3  3 x3 <NA>
## 4  4 x4   y4
## 5  5 x5   y5
## 6  6 x6   y6
  • Una unión derecha right_join() mantiene todas las observaciones en y.

##   ID    A  B
## 1  1   x1 y1
## 2  2   x2 y2
## 3  3   x3 y3
## 4  5   x5 y5
## 5  6   x6 y6
## 6  4 <NA> y4
  • Una unión completa full_join() mantiene todas las observaciones en x e y. observaciones en y.

##   ID    A    B
## 1  1   x1   y1
## 2  2   x2   y2
## 3  4   x4   y4
## 4  5   x5 <NA>
## 5  6   x6   y6
## 6  3 <NA>   y3

5.3.2.1 claves duplicadas

Pero que sucede si la id esta duplicada ¿cómo podemos unirlas? para ellos nos pondremos en dos escenarios diferentes.

  • El primero en una tabla tiene claves duplicadas. Esto es útil cuando quieres agregar información adicional dado que típicamente existe una relación uno a muchos.

##   ID  A  B
## 1  1 x1 y1
## 2  2 x2 y2
## 3  1 x3 y1
## 4  2 x4 y2
  • Ambas tablas tienen claves duplicadas. Esto es usualmente un error debido a que en ninguna de las tablas las claves identifican de manera única una observación. Cuando unes claves duplicadas, se obtienen todas las posibles combinaciones, es decir, el producto cartesiano:

##   ID  A  B
## 1  1 x1 y1
## 2  2 x2 y2
## 3  2 x2 y3
## 4  2 x3 y2
## 5  2 x3 y3
## 6  3 x4 y4

5.3.2.2 otras formas

con dplyr con merge
inner_join(base1, base2) merge(base1, base2)
full_join(base1, base2) merge(base1, base2, all.x = TRUE, all.y = TRUE)
right_join(base1, base2) merge(base1, base2, all.y = TRUE)
left_join(base1, base2) merge(base1, base2, all.x = TRUE)

La ventaja de los verbos específicos de dplyr es que muestran de manera clara la intención del código: la diferencia entre las uniones es realmente importante, pero se esconde en los argumentos de merge(). Las uniones de dplyr son considerablemente más rápidas y no generan problemas con el orden de las filas.

Si las variables clave tiene diferentes numbre (solo cosas en comun)

merge(base1, base2, by.x="nombre variable base 1", by.y="nombre variable base 2")

Si la variable se llame igual en las dos bases (solo cosas en comun)

merge(base1, base2, by="nombre variable")

Si queremos que se unan todos los casos

all=TRUE: merge(base1, base2, by="nombre variable", all=TRUE)

Si queremos unir por más de una variable: (si las variables se llaman igual en ambas bases)

merge(base1, base2, by=c("variable1", "variable2"))

Si las variables se llaman diferente en ambas bases

merge(base1, base2, by.x=c("variable1", "variable2"), by.y=c("variable1", "variable2"))

Otras formas efectivas de realizar una union de base son los siguientes codigos.

5.3.3 Uniones de filtros

Las uniones de filtro unen observaciones de la misma forma que las uniones de transformación, pero afectan a las observaciones no a las variables. Existen dos tipos:

  • semi_join(x, y) mantiene todas las observaciones en x con coincidencias en y.

## Joining, by = "ID"
##   ID  A
## 1  1 x1
## 2  2 x2
## 3  4 x4
## 4  5 x5
  • anti_join(x, y) descarta todas las observaciones en x con coincidencias en y.

## Joining, by = "ID"
##   ID  A
## 1  3 x3

Las semi uniones son útiles para unir tablas resumen previamente filtradas con las filas originales. Por ejemplo, imagina que encontraste los diez destinos más populares:

5.4 exploración de la data

Ahora lo realizaremos una exploración de la base de datos , en este caso usaremos la base de datos disponibles llamado AB_NYC_2019.csv, que se encuentra disponible en el siguiente link: https://www.kaggle.com/dgomonov/new-york-city-airbnb-open-data

Pero primero necesitamos la siguientes Liberia:

Importamos la base de datos a R-Studio como se vio en capítulos anteriores.

5.4.1 Inspección de una tabla

Luego realizamos la visualización de la data.

## Warning in instance$preRenderHook(instance): It seems your data is too big for client-side DataTables. You may consider server-side processing:
## https://rstudio.github.io/DT/server.html

Ahora realizaremos una breve descripción de las columnas de la data :

Variable Descripción
id Código de hostal
name Nombre de Airbnb
host_id Código de Airbnb
host_name Nombre del anfitrión
neighbourhood_group Distritos de new york
neighbourhood Vecindarios de los distritos
latitude Coordenada latitud
longitude Coordenada de longitud
room_type Tipo de habitación
price Precio
minimum_nights cantidad mínima de noches para una reserva
number_of_reviews Numero de revisiones por mes
last_review Ultimas reseña
reviews_per_month Cantidad de comentarios por mes para la propiedad
calculated_host_listings_count Numero de anuncios
availability_365 número de días en los que la lista está disponible para la reserva.

Para obtener más información revisamos a través de los códigos como lo siguientes:

Queremos determinar si la base de datos posee algún problema usamos función problems().

## [1] row      col      expected actual  
## <0 rows> (or 0-length row.names)

Para ver la cantidad de observaciones usaremos la función nrow().

## [1] 48895

Cuantas columnas o variables poseen la data con la función ncol().

## [1] 16

si queremos ver las primeras observaciones usamos la función head().

##     id                                             name host_id   host_name neighbourhood_group neighbourhood latitude longitude       room_type
## 1 2539               Clean & quiet apt home by the park    2787        John            Brooklyn    Kensington 40.64749 -73.97237    Private room
## 2 2595                            Skylit Midtown Castle    2845    Jennifer           Manhattan       Midtown 40.75362 -73.98377 Entire home/apt
## 3 3647              THE VILLAGE OF HARLEM....NEW YORK !    4632   Elisabeth           Manhattan        Harlem 40.80902 -73.94190    Private room
## 4 3831                  Cozy Entire Floor of Brownstone    4869 LisaRoxanne            Brooklyn  Clinton Hill 40.68514 -73.95976 Entire home/apt
## 5 5022 Entire Apt: Spacious Studio/Loft by central park    7192       Laura           Manhattan   East Harlem 40.79851 -73.94399 Entire home/apt
## 6 5099        Large Cozy 1 BR Apartment In Midtown East    7322       Chris           Manhattan   Murray Hill 40.74767 -73.97500 Entire home/apt
##   price minimum_nights number_of_reviews last_review reviews_per_month calculated_host_listings_count availability_365
## 1   149              1                 9  2018-10-19              0.21                              6              365
## 2   225              1                45  2019-05-21              0.38                              2              355
## 3   150              3                 0                            NA                              1              365
## 4    89              1               270  2019-07-05              4.64                              1              194
## 5    80             10                 9  2018-11-19              0.10                              1                0
## 6   200              3                74  2019-06-22              0.59                              1              129
##             id                                              name   host_id     host_name neighbourhood_group      neighbourhood latitude
## 48890 36484363                                QUIT PRIVATE HOUSE 107716952       Michael              Queens            Jamaica 40.69137
## 48891 36484665   Charming one bedroom - newly renovated rowhouse   8232441       Sabrina            Brooklyn Bedford-Stuyvesant 40.67853
## 48892 36485057     Affordable room in Bushwick/East Williamsburg   6570630       Marisol            Brooklyn           Bushwick 40.70184
## 48893 36485431           Sunny Studio at Historical Neighborhood  23492952 Ilgar & Aysel           Manhattan             Harlem 40.81475
## 48894 36485609              43rd St. Time Square-cozy single bed  30985759           Taz           Manhattan     Hell's Kitchen 40.75751
## 48895 36487245 Trendy duplex in the very heart of Hell's Kitchen  68119814    Christophe           Manhattan     Hell's Kitchen 40.76404
##       longitude       room_type price minimum_nights number_of_reviews last_review reviews_per_month calculated_host_listings_count
## 48890 -73.80844    Private room    65              1                 0                            NA                              2
## 48891 -73.94995    Private room    70              2                 0                            NA                              2
## 48892 -73.93317    Private room    40              4                 0                            NA                              2
## 48893 -73.94867 Entire home/apt   115             10                 0                            NA                              1
## 48894 -73.99112     Shared room    55              1                 0                            NA                              6
## 48895 -73.98933    Private room    90              7                 0                            NA                              1
##       availability_365
## 48890              163
## 48891                9
## 48892               36
## 48893               27
## 48894                2
## 48895               23

Si queremos saber los nombre las columnas o variables se usa la función colnames()

##  [1] "id"                             "name"                           "host_id"                        "host_name"                     
##  [5] "neighbourhood_group"            "neighbourhood"                  "latitude"                       "longitude"                     
##  [9] "room_type"                      "price"                          "minimum_nights"                 "number_of_reviews"             
## [13] "last_review"                    "reviews_per_month"              "calculated_host_listings_count" "availability_365"

5.4.2 Selección de filas y columnas

A veces queremos trabajar con un subconjunto de la tabla, como por ejemplo una selección de filas y/o columnas. Para este tipo de selecciones se usa el corchete [].

## Warning in instance$preRenderHook(instance): It seems your data is too big for client-side DataTables. You may consider server-side processing:
## https://rstudio.github.io/DT/server.html
## Warning in instance$preRenderHook(instance): It seems your data is too big for client-side DataTables. You may consider server-side processing:
## https://rstudio.github.io/DT/server.html

Como se observó los corchetes tienen dos partes separadas por una coma la que la precede se refiere a las filas que se encuentra a las izquierdas de la coma y a la derecha las columnas.

Pero no es necesario conocer índice de una determinada columna para seleccionarla, ya que los corchetes se pueden utilizar como poniendo el nombre de la columna como se ve a continuación.

## [1] 2539 2595 3647 3831

si queremo extraer y operar sobre columnas individuales de una tabla se utiliza el signo $.

Ahora con la función str() veremos cómo están compuestas las columnas si son numéricas o factor, como también veremos la cantidad de variables y observaciones que posee la data.

## 'data.frame':    48895 obs. of  16 variables:
##  $ id                            : int  2539 2595 3647 3831 5022 5099 5121 5178 5203 5238 ...
##  $ name                          : Factor w/ 47906 levels "","'Fan'tastic",..: 12661 38172 45171 15702 19366 25001 8337 25048 15597 17682 ...
##  $ host_id                       : int  2787 2845 4632 4869 7192 7322 7356 8967 7490 7549 ...
##  $ host_name                     : Factor w/ 11453 levels "","'Cil","-TheQueensCornerLot",..: 5051 4846 2962 6264 5982 1970 3601 9699 6935 1264 ...
##  $ neighbourhood_group           : Factor w/ 5 levels "Bronx","Brooklyn",..: 2 3 3 2 3 3 2 3 3 3 ...
##  $ neighbourhood                 : Factor w/ 221 levels "Allerton","Arden Heights",..: 109 128 95 42 62 138 14 96 203 36 ...
##  $ latitude                      : num  40.6 40.8 40.8 40.7 40.8 ...
##  $ longitude                     : num  -74 -74 -73.9 -74 -73.9 ...
##  $ room_type                     : Factor w/ 3 levels "Entire home/apt",..: 2 1 2 1 1 1 2 2 2 1 ...
##  $ price                         : int  149 225 150 89 80 200 60 79 79 150 ...
##  $ minimum_nights                : int  1 1 3 1 10 3 45 2 2 1 ...
##  $ number_of_reviews             : int  9 45 0 270 9 74 49 430 118 160 ...
##  $ last_review                   : Factor w/ 1765 levels "","2011-03-28",..: 1503 1717 1 1762 1534 1749 1124 1751 1048 1736 ...
##  $ reviews_per_month             : num  0.21 0.38 NA 4.64 0.1 0.59 0.4 3.47 0.99 1.33 ...
##  $ calculated_host_listings_count: int  6 2 1 1 1 1 1 1 1 4 ...
##  $ availability_365              : int  365 355 365 194 0 129 0 220 0 188 ...

Podemos observar a grandes rasgos que las variables room_type posee 3 niveles., que existe datos vacíos NA en la variable reviews_per_month y que neighbourhood posee 221 niveles.

Ahora veremos si existen datos vacíos en la data con la función sapply() y para buscar los datos vacíos en se utiliza is.na().

##                             id                           name                        host_id                      host_name 
##                              0                              0                              0                              0 
##            neighbourhood_group                  neighbourhood                       latitude                      longitude 
##                              0                              0                              0                              0 
##                      room_type                          price                 minimum_nights              number_of_reviews 
##                              0                              0                              0                              0 
##                    last_review              reviews_per_month calculated_host_listings_count               availability_365 
##                              0                          10052                              0                              0

Observamos que en las variables reviews_per_month posee 10052 datos vacíos y para ver los datos vacíos es lo mismo pero con is.null().

##                             id                           name                        host_id                      host_name 
##                              0                              0                              0                              0 
##            neighbourhood_group                  neighbourhood                       latitude                      longitude 
##                              0                              0                              0                              0 
##                      room_type                          price                 minimum_nights              number_of_reviews 
##                              0                              0                              0                              0 
##                    last_review              reviews_per_month calculated_host_listings_count               availability_365 
##                              0                              0                              0                              0

No existe datos nulos en la data como se puede observar. Ahora para eliminar los datos vacíos observados anteriormente.

Veremos si las observaciones fueron eliminadas.

## [1] 38843

5.4.3 Exploración de las variables

Realizaremos la exploración de la variable ID, lo primero que veremos si los datos de esta variable son datos únicos, para ello crearemos la data id y usaremos la función select() que nos ayudara seleccionar la base y las variables que deseamos observar, y además utilizaremos la función unique para ver si son únicas en su valor.

## [1] 38843

La data tiene 48895 datos y la columna ID igual por lo que no existen datos repetidos.

Con la variable name veremos si existen datos vacíos en la data y cual es id de estos datos vacíos.

## [1] id   name
## <0 rows> (or 0-length row.names)

No existe datos vacíos. Ahora siguiéremos saber el nombre especifico de un id, usaremos el mismo código anterior, pero en la función filter colocamos id == que representa el igual y el id que deseamos buscar en este caso es el 2232600..

##        id name
## 1 2232600

Como observamos no existe nombre, esto demuestra a a veces es bueno realizar más de una revisión. para solucionar estos problemas remplazaremos los datos en blanco por No .

## Warning in `[<-.factor`(`*tmp*`, airbnb$name == "", value = structure(c(12661L, : invalid factor level, NA generated
##         id name
## 1  2232600 <NA>
## 2  4209595 <NA>
## 3  4370230 <NA>
## 4  9325951 <NA>
## 5 10052289 <NA>
## 6 22275821 <NA>

Antes de eliminarlo tenemos que ver si estos datos son relevantes para nuestro estudio y si esas variables la utilizaremos más adelante.

## Warning in `[<-.factor`(`*tmp*`, airbnb$host_name == "", value = structure(c(5051L, : invalid factor level, NA generated

Ahora veremos la variable neighbourhood_group cuales son los niveles de esta variable.

##     neighbourhood_group
## 1              Brooklyn
## 2             Manhattan
## 47               Queens
## 170       Staten Island
## 172               Bronx

Vemos que son 5 distritos. Y en cuento a la variable neighbourhood con el mismo condigo anterior.

##                    neighbourhood
## 1                     Kensington
## 2                        Midtown
## 4                   Clinton Hill
## 5                    East Harlem
## 6                    Murray Hill
## 7             Bedford-Stuyvesant
## 8                 Hell's Kitchen
## 9                Upper West Side
## 10                     Chinatown
## 13                   South Slope
## 15                  West Village
## 16                  Williamsburg
## 17                   Fort Greene
## 18                       Chelsea
## 19                 Crown Heights
## 22                    Park Slope
## 26               Windsor Terrace
## 29                        Inwood
## 30                  East Village
## 31                        Harlem
## 33                    Greenpoint
## 38                      Bushwick
## 40               Lower East Side
## 46     Prospect-Lefferts Gardens
## 47              Long Island City
## 55                      Kips Bay
## 60                          SoHo
## 63               Upper East Side
## 64              Prospect Heights
## 74            Washington Heights
## 78                      Woodside
## 84                      Flatbush
## 86              Brooklyn Heights
## 102              Carroll Gardens
## 110                      Gowanus
## 137                    Flatlands
## 143                  Cobble Hill
## 144                     Flushing
## 159                  Boerum Hill
## 162                    Sunnyside
## 164                        DUMBO
## 170                   St. George
## 172                   Highbridge
## 175           Financial District
## 182                    Ridgewood
## 183          Morningside Heights
## 197                      Jamaica
## 200               Middle Village
## 212                         NoHo
## 219             Ditmars Steinway
## 224            Flatiron District
## 228             Roosevelt Island
## 235            Greenwich Village
## 242                 Little Italy
## 247                East Flatbush
## 250                Tompkinsville
## 258                      Astoria
## 262                  Eastchester
## 310                  Kingsbridge
## 343                  Two Bridges
## 361               Queens Village
## 368               Rockaway Beach
## 404                 Forest Hills
## 420                       Nolita
## 434                     Woodlawn
## 485           University Heights
## 495                     Gramercy
## 511                     Allerton
## 522                East New York
## 554             Theater District
## 558            Concourse Village
## 561               Sheepshead Bay
## 572                 Emerson Hill
## 576                Fort Hamilton
## 578                  Bensonhurst
## 588                      Tribeca
## 599                  Shore Acres
## 609                  Sunset Park
## 611                    Concourse
## 651                     Elmhurst
## 672               Brighton Beach
## 684              Jackson Heights
## 695                Cypress Hills
## 699                   St. Albans
## 703                     Arrochar
## 737                    Rego Park
## 738                    Wakefield
## 867                      Clifton
## 884                    Bay Ridge
## 958                 Graniteville
## 967               Spuyten Duyvil
## 968                    Stapleton
## 975                    Briarwood
## 976                   Ozone Park
## 977                  Columbia St
## 1034                Vinegar Hill
## 1061                  Mott Haven
## 1070                    Longwood
## 1071                    Canarsie
## 1109           Battery Park City
## 1140                Civic Center
## 1163               East Elmhurst
## 1179             New Springville
## 1194              Morris Heights
## 1328                     Arverne
## 1341                   Gravesend
## 1425                 Tottenville
## 1508             Mariners Harbor
## 1558                     Concord
## 1608                Borough Park
## 1689                     Bayside
## 1690           Downtown Brooklyn
## 1725                 Port Morris
## 1750                   Fieldston
## 1803                 Kew Gardens
## 1872                     Midwood
## 1883               College Point
## 1966                  Mount Eden
## 2106                 City Island
## 2195                    Glendale
## 2259                    Red Hook
## 2442               Richmond Hill
## 2828                     Maspeth
## 2840               Port Richmond
## 2931              Williamsbridge
## 2984                   Soundview
## 3021                   Woodhaven
## 3051                  Co-op City
## 3102             Stuyvesant Town
## 3240                 Parkchester
## 3350             North Riverdale
## 3396               Dyker Heights
## 3440                   Bronxdale
## 3762                    Sea Gate
## 3810                   Riverdale
## 3825           Kew Gardens Hills
## 3965                 Bay Terrace
## 4036                     Norwood
## 4141           Claremont Village
## 4167                  Whitestone
## 4227                     Fordham
## 4374                   Bayswater
## 4478                   Navy Yard
## 4805                 Brownsville
## 4862                 Eltingville
## 5218                  Mount Hope
## 5467                Clason Point
## 5546             Lighthouse Hill
## 5612         Springfield Gardens
## 5841                Howard Beach
## 5994                Belle Harbor
## 6054             Jamaica Estates
## 6109                    Van Nest
## 6369                   Bellerose
## 6539               Fresh Meadows
## 6933                 Morris Park
## 6942               West Brighton
## 7135                Far Rockaway
## 7226            South Ozone Park
## 7227                     Tremont
## 7301                      Corona
## 7770                 Great Kills
## 8019             Manhattan Beach
## 8289                 Marble Hill
## 8783                Dongan Hills
## 9564             East Morrisania
## 9764                 Hunts Point
## 9987                    Neponsit
## 10133                 Pelham Bay
## 10261              Randall Manor
## 10711                Throgs Neck
## 10723                  Todt Hill
## 10735                 West Farms
## 10835                Silver Lake
## 11212                  Laurelton
## 11624                Grymes Hill
## 11739                 Holliswood
## 11895             Pelham Gardens
## 12766                   Rosedale
## 13683          Castleton Corners
## 13738                   Edgemere
## 13816               New Brighton
## 14236                 Baychester
## 14749                    Melrose
## 15431               Bergen Beach
## 15778            Cambria Heights
## 16036               Richmondtown
## 17313               Howland Hook
## 17398              Schuylerville
## 17596               Coney Island
## 18445               Prince's Bay
## 18519                South Beach
## 19110                 Bath Beach
## 19470              Midland Beach
## 19556              Jamaica Hills
## 19900                    Oakwood
## 20197                Castle Hill
## 21630                 Douglaston
## 21848                   Huguenot
## 22282                   Edenwald
## 22311                    Belmont
## 22595                 Grant City
## 23450                Westerleigh
## 23868                 Morrisania
## 25147 Bay Terrace, Staten Island
## 25189         Westchester Square
## 25292                Little Neck
## 25862                   Rosebank
## 25881                  Unionport
## 26236                 Mill Basin
## 26403                     Hollis
## 29605              Arden Heights
## 29739                Bull's Head
## 30608                  Olinville
## 33262                  Rossville
## 33699               Breezy Point
## 34162                Willowbrook
## 34939             New Dorp Beach

Con la variable price veremos el promedio , máximo, varianza y mínimo.

##       mean variance min   max
## 1 142.3179 38787.58   0 10000

El mínimo es 0 por que existen hospedaje con precio 0 esto es ilógico para una empresa por lo que se busca identificar cuáles son estos datos.

##          id price
## 1  18750597     0
## 2  20333471     0
## 3  20523843     0
## 4  20608117     0
## 5  20624541     0
## 6  20639628     0
## 7  20639792     0
## 8  20639914     0
## 9  21291569     0
## 10 21304320     0

Son 10 datos y como los ID son datos únicos se entiende que estos datos no se repitieran. esta columna es relevante por lo que se elimina los 11 datos nulos.

##       mean variance min   max
## 1 142.3546 38792.35  10 10000

Con la variable minimum_nights.

##       mean variance min  max
## 1 5.867561 302.2754   1 1250

Existen máximos con más de 365 días por lo que se determina que no es coherente por lo que se elimina las celdas mayores a 365.

## [1] 6

cuando queremos eliminar observaciones especificas utilizaos el siguente codigo.

Se elimina para no afectar la data y verificamos.

##      mean variance min max
## 1 5.74953 195.6422   1 365

Ahora veremos la variable number_of_reviews.

##       mean variance min max
## 1 29.29801 2322.392   1 629